Operator Library: Hardware Platform
このオペレーターは、CXPデュアルタップカメラとVisualApplets間の画像データインターフェースを表します。このオペレーターは、シングルチャネル、デュアルチャネル、またはクアッドチャネルのCXPインターフェースに使用できます。インターフェースの種類は、パラメータConnectionCountで選択します。このオペレーターは、カメラが配信するフォーマットに関係なく、各タップポートの生画像データを出力します。その後、この画像データをカメラから送信されたフォーマットに変換する必要があります。画像データを変換するには、生バイト値をピクセル値に集約およびキャストするための適切なオペレーターを使用します。動作中の特定の状況は、以下に説明するようにイベントシステムを介して通知される場合があります。さらに、このオペレーターには、カメラとの接続ステータスを示すさまざまなパラメータがあります。
| ハードウェアプラットフォームで使用可能 |
|---|
| imaFlex CXP-12 Penta |
| imaFlex CXP-12 Quad |
CXP標準マルチタップ定義
通常、画像ピクセルは左上から右下に向かって順次スキャンされます。しかし、近代的なイメージセンサーのピクセル数が着実に増加しているため、このアプローチでは許容可能なフレームレートが得られません。この問題に対処するため、センサーメーカーは複数のピクセルを同時にスキャンすることで対応しています。CXP標準では、タップの概念を導入することでこの技術に対応しています。タップは、画像ピクセルを順次読み取るスキャンデバイスとみなすことができます。画像のスキャン方法はTap Geometryとして定義され、ホストがデバイスから読み取ります。
![]() |
タップは垂直スキャンのみに適用されます |
|---|---|
|
タップは垂直スキャンのみに適用されます。水平スキャンは左から右へ固定されています。 |
CXP標準では、フレームグラバーホストが1X-1Y、1X-1Y2、および1X-2YEの3つのタップフォーマットをサポートすることが推奨されています。タップフォーマット1X-1Yは、左上から右下へピクセル単位で画像をスキャンするデフォルトの特性を表し、一方、他のフォーマットは次の図に示す2つのタップジオメトリを表しています。

各タップからのデータは個別のストリームに形成されますが、ストリームIDとタップの間に固定のマッピングは存在しないことに注意することが重要です。ただし、このマッピングはアクージション中には一定に保たれると仮定して問題ありません。 TapG コード、したがってこのマッピングを見つけるために必要な情報は、オプションの MetaDataTap0/1 ポートで読み取ることができるCXPイメージヘッダーに提供されます。
| Tap Format | TapG Code |
|---|---|
| 1X-1Y | 0x0000 |
| 1X-1Y2, tap 1 | 0x0004 |
| 1X-1Y2, tap 2 | 0x1004 |
| 1X-2YE, tap 1 | 0x0041 |
| 1X-2YE, tap 2 | 0x1041 |
![]() |
画像の半分下の反転はこのオペレーターの責任ではありません |
|---|---|
|
1X-2YEタップフォーマットの場合における画像の半分下の反転は、このCxpCameraMultiTapオペレーターの責任ではありません。ユーザーアプリケーションは、追加のVisualAppletsオペレーターを使用してタップ(1)を再フォーマットする必要があります。 |
VisualAppletsでのインスタンス化
このオペレーターは、出力タップに画像データを提供します。この出力は常に存在します。シングルタップの場合は1であり、デュアルタップカメラの場合は2に設定する必要があります。これらの標準出力ポートに加えて、各タップ出力専用にCXPヘッダーメタデータのオプションのMetaData出力を設定できます。つまり、デュアルタップアプリケーションでは、最大2つのMetaDataTapポートを定義できます。オペレーターのインスタンス化時に以下のポップアップダイアログが表示され、次の順列に設定できます:

図423. この設定では、オペレーターは両方のカメラタップをTap0ポートとTap1ポートの2つの独立したストリームとして提供します。また、オペレーターはTap0ポートのメタ情報も提供します。この設定は、TapG Codeフィールドを除いてCXPヘッダーが両方のタップでほとんどの部分で同一である、対称的なカメラタップ構成において意味を持つ場合があります。
オプションのMetaDataTapポート
両方のメタデータポートのフォーマットは同一です。 VisualAppletsでは32ビット出力として提供され、次の図に示されています:

各CXPフレームには、対応するエラーフリーの画像ヘッダーが用意されています。不正確な画像ヘッダーの場合、画像ストリームデータはVisualAppletsパイプラインに供給されません。圧縮された画像ヘッダーは6ワードで構成されます。最後のバイトは追加情報に使用され、内部使用のみを目的としています。具体的には、HeaderErrorビットは、画像ヘッダー自体にエラーがあるかどうかを通知します。
| 画像ヘッダー | 説明 |
|---|---|
| StreamId | CXPストリームのID |
| Tag | 16ビットのソース画像インデックス。転送された画像ごとにインクリメントされ、0xFFFFで0にラップアラウンドします。(マルチタップストリームの場合のように)同じ画像に関連するデータを含む各ストリームには、同じ番号を使用する必要があります。 |
| XSize | ピクセル単位の画像幅を表す24ビットの値。 |
| XOff | 完全なデバイス画像の左端のピクセルに対する、画像の水平方向のオフセットをピクセル単位で表す24ビットの値。 |
| YSize | 画像の高さをピクセル単位で表す24ビット値です。この値は、ラインスキャン画像の場合は0に設定されます。CameraScanModeパラメータには、常にこの値から読み取られたカメラタイプが表示されます。Tap0/Tap1 Img ProtocolがVALT_LINE1Dに設定されている場合、YSizeは処理において無視され、オペレーターはすべての入力データをエンドレスなラインストリームとして出力します。画像プロトコルがVALT_IMAGE2Dに設定されている場合も、YSize=0によってエンドレスなラインストリームが出力されます。 |
| YOff | デバイス全体の画像の最上行を基準とした、画像の垂直方向のオフセットをピクセル単位で表す24ビット値です。この値は、ラインスキャン画像の場合は0に設定されます。 |
| DSizeL | 画像ラインあたりのデータワード数を表す24ビット値です。 |
| PixelF | Pixel Formatを表す16ビット値です。 |
| TapG | タップジオメトリを表す16ビット値です。 |
| Flags | イメージフラグです。 |
| x-Mirror | (未使用)。入力画像がx方向にミラーリングされているかどうかを示します。 |
| y-Mirror | (未使用)。入力画像がy方向にミラーリングされているかどうかを示します。 |
| HeaderError |
1: 画像ヘッダーにエラーがあり、フレームはロストとして宣言されます。オペレーターの出力データストリームに、対応する画像データは存在しません。 0: 画像ヘッダーが正しく、オペレーターの出力データストリームに対応する画像データが存在します。 |
![]() |
画像プロトコル:エリアおよびラインスキャンカメラ |
|---|---|
|
カメラオペレーターの出力に対する画像プロトコルの影響には、次の2つがあります。
CameraScanModeパラメータには、常にCXPヘッダーから読み取られたカメラタイプが表示されます。Tap0/Tap1 Img ProtocolがVALT_LINE1Dに設定されている場合、YSizeは処理において無視され、オペレーターはすべての入力データをエンドレスなラインストリームとして出力します。画像プロトコルがVALT_IMAGE2Dに設定されている場合も、YSize=0によりエンドレスなラインストリームが出力されますが、これによりTap0/Tap1 Max Img Heightを超える画像が生成されることになります。サイズが大きすぎる画像は、デザイン内のCxpCameraオペレーターの後続のオペレーターにおいて予期しない動作を引き起こす可能性があります。これを回避するために、SplitImageオペレーターなどを使用して、入力されるラインストリームを複数の画像に分割することを推奨します。 |
![]() |
画像幅および画像高さの変更 |
|---|---|
|
出力リンクの最大画像幅および高さ Property を使用して、幅と高さをカメラ固有の設定に調整できます。ただし、オペレーターポート Tap0/Tap1 の最大画像幅は、そのポートの Parallelism で割り切れる必要があります。したがって、最大画像幅がポート Tap0 および Tap1 の Parallelism で割り切れることを確認してください。 |
デバイスリソースの使用状況
このオペレーターは、パラメータ ConnectionCount の設定に応じて、CameraPort タイプの1つまたは複数のリソースを使用します。system イベントには、EventPort タイプのリソースが使用されます。ConnectionCount が X4(クアッドチャネル)に設定されている場合、次のリソースダイアログが開きます。

エラーハンドリングとイベントシステム
受信した再構築フレームが、CXPイメージヘッダーでカメラから通知されたサイズよりも大きいか小さいかをオペレーターが検出すると、安全回路が有効になります。その後、オペレーターは超過したピクセルとラインを切り捨てるため、後続の処理パイプラインでは常にイメージヘッダーで定義されたフレームサイズが認識されます。受信したフレームの寸法がイメージヘッダーで指定されたものよりも小さい場合、オペレーターは受信したフレームを未定義データで Fill し、イメージヘッダーで定義された指定フレームサイズを実現します。小さいフレームを Fill すると、後続のフレームが失われる可能性があります。この損失はイベントごとにランタイムソフトウェア(Framegrabber SDK)に報告されます(次の段落を参照)。サイズの不一致もイベントを引き起こします。
For a set of very critical errors, the operator will forward asynchronous events to the host runtime software (Framegrabber SDK). The event name in the Framegrabber API is <hierarchical operator name>\CxpStreamStatus, e.g. Device1\Process0\Camera\CxpStreamStatus. The event payload is provided as four 16-bit data words. The event format is defined as follows:

-
word [0]:
-
bits [0:15]: イベントが発生した CXP イメージタグ。
-
-
word [1]:
-
bits [8:15]: イベントが発生したストリーム ID。
-
bits [0:7]: 予約済み、無視してください。
-
-
word [2]:
-
bit [0]: CRC エラーが発生しました。
-
bit [1]: イメージヘッダーでストリームマーカーエラーが検出されました。
-
bit [2]: 修正できなかったイメージヘッダーのエラーが検出されました。
-
bit [3]: フレームサイズエラーが検出されました。つまり、CXP イメージヘッダーで定義された画像サイズが、送信されたパケットからの再構築フレームサイズと一致していません。これは、カメラがイメージヘッダーに1つの情報を記載しつつ、ヘッダーで通知されたデータ量とは異なる量を送信した場合に発生します。
-
bits [4:15]: 予約済み、無視してください。
-
-
word [3]:
-
bit [0]: イベントタイプ、0 = Corrupted Entity、1 = Lost Entity。
-
Corrupted Entity とは、フレーム内でエラーが発生し、そのフレームがすでに VisualApplets パイプラインに取り込まれていることを意味します。
-
Lost Entity とは、フレームが後続のオペレーターに転送される前にエラーが発生し、カメラオペレーターによってそのフレームが破棄されたことを意味します。
-
破損したエンティティが検出された場合、後続のオペレーターで未定義の動作を引き起こさないように、オペレーターは CXP イメージヘッダーの定義に従ってフレームを Fill します。この Fill 処理中に新しいフレームが到着して失われる可能性があります。ロストエンティティイベントは、カメラがフレームタグに従ってギャップのあるデータを送信したときにも発生します。
-
-
bit [1]: タイプ Corrupted Entity のイベント損失が発生しました。これは、タイプ Corrupted Entity の先行イベントが失われたことを意味します。これは、ランタイムソフトウェアがイベントに反応せず、内部イベントキューがいっぱいになったときに発生します。
-
bit [2]: タイプ Lost Entity のイベント損失が発生しました。これは、タイプ Lost Entity の先行イベントが失われたことを意味します。これは、ランタイムソフトウェアがイベントに反応せず、内部イベントキューがいっぱいになったときに発生します。
-
bits [3:15]: 失われた Lost Entity イベントの数。
-
イベントには、破損したエンティティに関するイベントと、失われたエンティティに関するイベントの2種類があります。word 3 の bit 0 は、発生したイベントの種類を示します。イベントバッファがいっぱいになると、イベントが失われることがあります。破損したエンティティを示すイベントが失われた場合、word 3 の bit 1 が設定されます。失われたエンティティを示すイベントが失われた場合、word 3 の bit 2 が設定され、bit 3 から 15 にはフレームの損失を示す失われたイベントの数が提供されます。bit 2 が設定されているにもかかわらず Counter が 0 の場合は、Counter のオーバーフローが発生したことを意味します。
すべてのイベントによってソフトウェア割り込みが発生します。イベントの数を減らすため、同じフレームタグを持つ複数のイベントが統合される場合があります。その場合、一部のエラーフラグが結合されます。イベントが失われた場合、失われたイベントの前のイベントには失われたイベントに関する情報が含まれており、同じフレームタグを持つ後続のイベントと統合することはできません。
CRCエラーによって発生したイベントはフレームタグを報告しますが、これは必ずしもCRCエラーが発生したフレームに正確に対応しているとは限りません。フレームタグは、先行フレームまたは後続フレームのものである可能性があります。これは、カメラが2つ以上のフレーム間のトランジションを含むCXPパケットを送信した場合にのみ発生します。CRCの計算はパケットの終了時に完了しますが、ストリームデータはオンザフライで再構築されます。つまり、先行フレームがすでにオペレーターによって送信された後にのみCRCエラーが検出される状況が発生する可能性があります。カメラパケットに進行中のフレームの末尾と次のフレームの先頭の両方のデータが含まれていない通常の状況では、CRCエラー時のフレームタグは常に正しくなります。完全なフレームストリームデータが8kの最大パケットサイズ未満である限り、その他のすべてのケースでは、1つのパケット内でオーバーラップするフレームは1つだけである可能性があります。その場合、ソフトウェアアプリケーションは、フレームタグ - 1の先行フレームと、フレームタグ + 1の後続フレームについても破損している可能性があると見なす必要があります。
![]() |
タップ間のエラーイベントの区別 |
|---|---|
|
エラー処理とイベントシステムは、両方のCXPタップストリームで共通です。stream-IDフィールドを使用して、受信したイベントを適切なタップに関連付けます。通常、Tap 0にはより低いstream-ID(通常は0)が割り当てられます。Tap 1には、Tap 0のものよりも大きいstream-IDが割り当てられます。 |
| Property | 値 |
|---|---|
| オペレータータイプ | M |
| Output Links | Tap0/Tap1、画像データ出力 MetaDataTap0/MetaDataTap1、オプションのメタデータ出力 |
| ConnectionCount | ||||
|---|---|---|---|---|
| タイプ | 静的書き込みパラメータ | |||
| Default | X1 | |||
| 範囲 | {X1, X2, X4} | |||
|
パラメータ ConnectionCount は、CXPリンクに集約されるCXPレーンの数を定義します。使用される接続ポートのインデックスは、CameraPort 型のリソースによって処理されます。ポートリソースの数は接続数と一致します(例: X2: 2つの CameraPort リソースアイテム)。 複数の CxpCamera オペレーターをインスタンス化する場合(デュアルカメラアプレットなど)、同じインデックスを持つ複数のリソースが使用される場合や、消費される CameraPort リソースの数が最大値の4を超える場合に、リソース競合が発生する可能性があります。この場合、デザインルールチェックによってエラーが報告されます。
|
||||
| ResetStatus | ||||
|---|---|---|---|---|
| タイプ | 動的書き込みパラメータ | |||
| Default | Off | |||
| 範囲 | {Off, On} | |||
|
パラメータ ResetStatus は、カメラの統計情報、つまりエラーカウンターをリセットします。
|
||||
| UsedConnections | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | {1,2,4} | |||
|
パラメータ UsedConnections は、実行時に検出ソフトウェアによって構成されたCXPレーンの量を示します。
|
||||
| PacketTagErrorCount | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | [0 : 8191] | |||
|
パラメータ PacketTagErrorCount は、CXP規格で期待されるタグに準拠していないタグを持つ受信パケットの数を示します。具体的には、後続のストリームパケットタグ列挙においてギャップが観測されたときに、この値がカウントアップされます。このパラメータは13ビット幅であり、ビット [11:0] が実際のCounter値を示し、ビット [12] がCounterのオーバーフローを表します。オーバーフロービットがセットされている場合、Counter値は無視して構いません(don't care)。
|
||||
| ImageTagErrorCount | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | [0 : 8191] | |||
|
このパラメータは、画像ヘッダータグ、CXP規格で期待されるタグ、および受信したタグの間でいくつの不一致が発生したかをカウントします。このパラメータは13ビット幅であり、ビット [11:0] が実際のCounter値を示し、ビット [12] がCounterのオーバーフローを表します。オーバーフロービットがセットされている場合、Counter値は無視して構いません(don't care)。
|
||||
| StreamIdErrorCount | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | [0 : 8191] | |||
|
このパラメータは、ストリームパケット内の受信ストリームID値が画像ヘッダーで指定されたストリームID値と一致しない頻度をカウントします。このパラメータは13ビット幅であり、ビット [11:0] が実際のCounter値を示し、ビット [12] がCounterのオーバーフローを表します。オーバーフロービットがセットされている場合、Counter値は無視して構いません(don't care)。
|
||||
| CorrectedErrorCount | |
|---|---|
| タイプ | 動的読み取りパラメータ |
| Default | |
| 範囲 | [0 : 8191] |
|
このパラメータは、画像ヘッダーまたはラインマーカーで検出されたエラーのうち、いくつが修正されたかをカウントします。このパラメータは13ビット幅であり、ビット [11:0] が実際のCounter値を示し、ビット [12] がCounterのオーバーフローを表します。オーバーフロービットがセットされている場合、Counter値は無視して構いません(don't care)。 |
|
| UncorrectedErrorCount | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | [0 : 8191] | |||
|
このパラメータは、同じバイト内の複数ビットエラーが原因で、画像ヘッダーまたはラインマーカーで検出されたエラーのうち修正できなかったものをカウントします。このパラメータは13ビット幅であり、ビット [11:0] が実際のCounter値を示し、ビット [12] がCounterのオーバーフローを表します。オーバーフロービットがセットされている場合、Counter値は無視して構いません(don't care)。
|
||||
| PacketBufferOverflowCount | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | [0 : 8191] | |||
|
このパラメータは、アグリゲーションモードでのチャンネルボンディングにおいて、パケットバッファオーバーフローがどのくらいの頻度で発生するかをカウントします。このパラメータは、ConnectionCount = X2 または X4 の場合にのみ関連します。このパラメータは13ビット幅であり、ビット [11:0] が実際のCounter値を示し、ビット [12] がCounterのオーバーフローを表します。オーバーフロービットがセットされている場合、Counter値は無視して構いません(don't care)。
|
||||
| PacketBufferOverflowSource | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | [0x0 : 0xf] | |||
|
このパラメータは、可能性のある4つのCXPチャンネルのうち、どのチャンネルでパケットバッファオーバーフローが発生したかを照会するためのビットマスクを実装します。パラメータの幅は ConnectionCount パラメータによって異なります。X1 モードではパラメータ幅は1ビット、X2 モードではパラメータ幅は2ビット、X4 モードではパラメータ幅は4ビットです。順序は、LSB = 最低のCXPチャンネル番号、MSB = オペレーターによって割り当てられた最高のCXPチャンネル番号となります。
|
||||
| CameraScanMode | |
|---|---|
| タイプ | 動的読み取りパラメータ |
| Default | |
| 範囲 | {area,line} |
|
受信した画像ヘッダーには、ストリームがエリアスキャン(YSize > 0)用かラインスキャン(YSize = 0)用かを示す情報が含まれています。このパラメータは、最後に有効として受信されたストリーム画像ヘッダー情報を示します。 このパラメータは、Tap1ストリームがまったく同じモードであるという前提のもとで、Tap0ストリームに対してのみ読み出されます。つまり、このパラメータはカメラ全体のエリアスキャンまたはラインスキャンのいずれかに適用されるため、両方のタップで同一であり、タップ固有ではありません。 |
|
| MarkerErrorCount | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | [0 : 8191] | |||
|
このパラメータは、CXPストリームマーカーとヘッダーまたはラインマーカーのシーケンスが不正であった回数をカウントします。このパラメータは13ビット幅であり、ビット[11:0]が実際のCounter値を表し、ビット[12]がCounterのオーバーフローを示します。オーバーフロービットが設定されている場合、Counter値は無視するものとして扱われます。
|
||||
| UnexpectedStartupData | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | {false, true} | |||
|
このパラメータは、オペレーターリセット後の最初的数据値が予期しないものであった、つまり事前に画像ヘッダーを受信していなかったというエラー状況を検出します。この状況は、カメラのバグのある実装、フレームグラバーのファームウェア、または検出手順の誤ったソフトウェア制御が原因で発生する可能性があります。また、理論的にはカメラのハードウェアの欠陥によってもこの状況が発生する可能性があります。
|
||||
| FrameLostCount | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | [0 : 33554431] | |||
|
このパラメータは、取り込み中に失われ、VisualAppletsパイプラインに送信されなかったフレームをカウントします。画像ヘッダーのエラーが検出された場合や、フレームが別のフレームと重なる場合にフレームが失われます。このパラメータは25ビット幅であり、ビット[23:0]が実際のCounter値を表し、ビット[24]がCounterのオーバーフローを示します。オーバーフロービットが設定されている場合、Counter値は無視するものとして扱われます。
|
||||
| FrameCorruptedCount | ||||
|---|---|---|---|---|
| タイプ | 動的読み取りパラメータ | |||
| Default | ||||
| 範囲 | [0 : 33554431] | |||
|
このパラメータは、取り込み中の破損したフレームをカウントします。破損したフレームとは、エラーピクセルが含まれており、VisualAppletsパイプラインに送信されるフレームのことです。このパラメータは25ビット幅であり、ビット[23:0]が実際のCounter値を表し、ビット[24]がCounterのオーバーフローを示します。オーバーフロービットが設定されている場合、Counter値は無視するものとして扱われます。
|
||||
オペレーターCxpCameraMultiTapの使用法を以下の例に示します。
-
「Tap Geometry Sortingを使用したマルチタップカメラインターフェイスの機能例 」
使用例 - オペレーターの使用方法のデモ

![[注]](../common/images/admon/note.png)





![[重要]](../common/images/admon/important.png)

前へ

